História linear por meio de fast-forwarding é possível apenas quando o histórico de ramificações é uma linha reta de descendentes. No momento em que a branch principal e a branch de recurso se dividirem, o simples 'movimento do ponteiro' de uma fusão fast-forward torna-se matematicamente impossível.
1. A Distinção Tangível
As fusões fast-forward são não refletidas no histórico do projeto. Isso significa que a existência única da branch é efetivamente apagada após a integração. Em contraste, as fusões de três vias preservam a narrativa do trabalho paralelo.
2. O Princípio do Historiador
A branch permanente master atua como historiador de todo o nosso projeto. Ela só pode registrar o que permitimos que ela veja; quando os caminhos se dividem, somos obrigados a criar um novo 'evento' — um commit de fusão—para fechar a lacuna e reconciliar duas realidades diferentes que evoluíram simultaneamente.
3. Detecção da Divergência
Usando git log --oneline, os desenvolvedores podem visualizar onde os caminhos se dividem. Se a 'master' avançou desde que você criou a branch, o Git não pode mover o ponteiro para frente sem perder o novo trabalho na master.